package com.cn.demo.springboot.shiro.service;

import java.util.List;
import java.util.Set;

import com.cn.demo.springboot.shiro.entity.Permission;
import com.cn.demo.springboot.shiro.entity.Role;
import com.cn.demo.springboot.shiro.entity.ShiroUser;
/**
 * shiro 权限服务层，必须实现
 * @author admin
 *
 */
public interface IAuthRealmService {

	/**
	 * 根据用户账号查询用户信息
	 * @return
	 */
	ShiroUser findUserByAccount(String account);
	
	
	/**
	 * 根据用户id获取用户权限
	 * @param userId
	 * @return
	 */
	Set<String> getPermissions(String userId);
	
	
	
	
/************************************************授权manager start********************************************/
	
	/**
	 * 批量授权
	 * @param roleId 角色id
	 * @param permissionIds 权限id
	 */
	public void batchAuthorization(Integer roleId,Integer [] permissionIds);
	
	/**
	 * 批量删除授权
	 * @param roleId 角色id
	 * @param permissionIds 权限id
	 */
	public void batchDelAuthorization(Integer roleId,Integer [] permissionIds) ;
	
	/**
	 * 给用户增加一组角色
	 * @param userId
	 * @param roleIds
	 */
	public void addBatchUserRole(String userId,Integer [] roleIds);
	
	/**
	 * 给用户取消一组角色
	 * @param userId
	 * @param roleIds
	 */
	public void removeBatchUserRole(String userId,Integer [] roleIds) ;
	
	/**
	 * 
	 * @param roleName
	 */
	public void addRole(String roleName);
	
	/**
	 * 删除角色
	 * @param roleId
	 */
	public void delRole(Integer roleId);
	
	
	/************************************************授权manager end********************************************/
	
	
	
	
	/************************************************权限相关查询start********************************************/
	
	/**
	 * 查询用户权限--相同权限将被合并为一个
	 * @param userId
	 * @return
	 */
	public List<Permission> findPermissionByUser(String userId);
	
	/**
	 * 查询角色权限
	 * @param roleId
	 * @return
	 */
	public List<Permission> findPermissionByRole(Integer roleId);
	
	/**
	 * 查询全部权限
	 * @return
	 */
	public List<Permission> findPermissionAll( );
	
	/**
	 * 查询全部角色
	 * @return
	 */
	public List<Role> findRoleAll( );
	
	
	/************************************************权限相关查询end********************************************/
}
